{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "# scikit-learn中的SVM"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn import datasets\n",
    "\n",
    "iris = datasets.load_iris()\n",
    "\n",
    "X = iris.data\n",
    "y = iris.target\n",
    "\n",
    "# 为方便可视化，只取前2个特征；\n",
    "# 暂时只处理2分类问题，所以只取2个类别\n",
    "X = X[y<2, :2]\n",
    "y = y[y<2]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1087e8668>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(X[y==0,0], X[y==0,1], color='red')\n",
    "plt.scatter(X[y==1,0], X[y==1,1], color='blue')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## svm前必须对数据进行标准化处理\n",
    "\n",
    "### 我们只是想看分类结果的可视化，不需要对未知数据进行预测，所以就不区分训练集与测试集"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.preprocessing.data import StandardScaler\n",
    "\n",
    "standard_scaler = StandardScaler()\n",
    "standard_scaler.fit(X)\n",
    "X_standard = standard_scaler.transform(X)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "LinearSVC(C=1000000000.0, class_weight=None, dual=True, fit_intercept=True,\n     intercept_scaling=1, loss='squared_hinge', max_iter=1000,\n     multi_class='ovr', penalty='l2', random_state=None, tol=0.0001,\n     verbose=0)"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.svm.classes import LinearSVC\n",
    "\n",
    "# C取值越大，就越倾向于是一个hard margin\n",
    "svc = LinearSVC(C=1e9)\n",
    "svc.fit(X_standard, y)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 画出决策边界"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/usr/local/seamonster/MachineLearningClassicAlgorithmEnv/lib/python3.6/site-packages/matplotlib/contour.py:967: UserWarning: The following kwargs were not used by contour: 'linewidth'\n  s)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x108ea77f0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from playML.plot_utils import plot_decision_boundary\n",
    "plot_decision_boundary(svc, axis=[-3,3,-3,3])\n",
    "plt.scatter(X_standard[y==0,0], X_standard[y==0,1], color='red')\n",
    "plt.scatter(X_standard[y==1,0], X_standard[y==1,1], color='blue')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 画出决策边界（C=0.01）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "LinearSVC(C=0.01, class_weight=None, dual=True, fit_intercept=True,\n     intercept_scaling=1, loss='squared_hinge', max_iter=1000,\n     multi_class='ovr', penalty='l2', random_state=None, tol=0.0001,\n     verbose=0)"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "svc_2 = LinearSVC(C=0.01)\n",
    "svc_2.fit(X_standard, y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/usr/local/seamonster/MachineLearningClassicAlgorithmEnv/lib/python3.6/site-packages/matplotlib/contour.py:967: UserWarning: The following kwargs were not used by contour: 'linewidth'\n  s)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x108df9dd8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_decision_boundary(svc_2, axis=[-3,3,-3,3])\n",
    "plt.scatter(X_standard[y==0,0], X_standard[y==0,1], color='red')\n",
    "plt.scatter(X_standard[y==1,0], X_standard[y==1,1], color='blue')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### SVM也是有系数的"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 4.03239325, -2.49296451]])"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "svc.coef_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 0.95367834])"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "svc.intercept_"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "可以看到系数和截距都是数组，这是因为sklearn已经预先为我们处理了使svm可以处理多分类任务，每多一个分类就等于多一条线/平面/超平面，于是系数和截距的数组就多一个元素。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 增加绘制margin的方法"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "from playML.plot_utils import plot_svc_decision_boundary"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 画出hard margin的margin"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/usr/local/seamonster/MachineLearningClassicAlgorithmEnv/lib/python3.6/site-packages/matplotlib/contour.py:967: UserWarning: The following kwargs were not used by contour: 'linewidth'\n  s)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x108f338d0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_svc_decision_boundary(svc, axis=[-3,3,-3,3])\n",
    "plt.scatter(X_standard[y==0,0], X_standard[y==0,1], color='red')\n",
    "plt.scatter(X_standard[y==1,0], X_standard[y==1,1], color='blue')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 画出soft margin的margin"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/usr/local/seamonster/MachineLearningClassicAlgorithmEnv/lib/python3.6/site-packages/matplotlib/contour.py:967: UserWarning: The following kwargs were not used by contour: 'linewidth'\n  s)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x108fd2cc0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_svc_decision_boundary(svc_2, axis=[-3,3,-3,3])\n",
    "plt.scatter(X_standard[y==0,0], X_standard[y==0,1], color='red')\n",
    "plt.scatter(X_standard[y==1,0], X_standard[y==1,1], color='blue')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 2",
   "language": "python",
   "name": "python2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
